export default {
  namespaced:true,
  // 模块的 state 数据
    state: () => ({
      // 购物车的数组，用来存储购物车中每个商品的信息对象
      // 每个商品的信息对象，都包含如下 6 个属性：
      // { goods_id, goods_name, goods_price, goods_count, goods_small_logo, goods_state }
      cart: JSON.parse(uni.getStorageSync('cart') || '[]') 
    }),
  
    // 模块的 mutations 方法
    mutations: {
      // 商品添加购物车
      getCart(state,obj) {
        // 查看商品数组中是否有重复商品
        const findGoods = state.cart.find((item) => item.goods_id === obj.goods_id)
        // 存在就让数量加加
        if(findGoods) {
          findGoods.goods_count++
          return
        }
        state.cart.push(obj)
      },
      // 将购物车中的数据持久化存储到本地
      saveToStorage(state) {
         uni.setStorageSync('cart', JSON.stringify(state.cart))
      },
      // 删除商品
      clickCartDel(state,goods) {
        state.cart = state.cart.filter(x => x.goods_id !== goods)
        this.commit("Cart/saveToStorage")
      },
      // 点击全选修改所有商品状态
      clickSettle(state,bol) {
        state.cart.forEach(item => {
          item.goods_state = bol
        })
        this.commit("Cart/saveToStorage")
      }
    },

    getters: {
      // 动态获取商品总件数
      toCart(state) {
        let goodsCound = 0
        state.cart.forEach(item => {
          goodsCound = goodsCound + item.goods_count
        })
        return goodsCound
      },
      // 已勾选商品的总件数
      toCount(state) {
        let a = 0
        state.cart.filter(item => item.goods_state).forEach(item => {
          a = a + item.goods_count
        })
        return a
      },
      // 商品总价的计算
      cartPrice(state) {
        let a = 0
        state.cart.filter(item => item.goods_state).forEach(item => {
          a = a + item.goods_price*item.goods_count
        })
        return a
      },
      // 单选按钮控制全选按钮
      buttonCart(state){
       return state.cart.every(item => item.goods_state)
      }
    }
  }